/**
 * Created with JetBrains WebStorm.
 * User: scorpioshao
 * Date: 14-11-11
 * Time: 下午22:22
 * To change this template use File | Settings | File Templates.
 */
KISSY.add(function (S, DOM, Node, Event, Base) {
    var $ = S.all,
        _event = S.Event;

    function TipAlert() {
        
        var self = this;

        if (!(self instanceof TipAlert)) {
            return new TipAlert();
        }

        // 调用父类构造函数
        TipAlert.superclass.constructor.apply(self, arguments);

        self._init();//立即执行初始化
    }
    S.extend(TipAlert, Base, {
        _init: function () {

            var self = this;

            //延时时间
            self.timeOut = 0.3;

            //创建tip层
            self._createTip();

            //添加关闭按钮事件
            self._closeTip();
            //添加鼠标移入移出事件
            self._mouseEvent();

            //塞入body
            $('body').append(self.J_tip_alert);

            //显示提示层(开始是display: none)
            self._showTip();
            //两秒后隐藏
            self._fadeOutTip();

        },

        //创建tip弹出层
        _createTip: function () {

            var self = this;

            //创建弹出层
            self.J_tip_alert = $('<div class="J_tip_alert"></div>');
            //创建关闭按钮
            self.J_tip_close = $('<span class="J_tip_close">close</span>');
            //创建title
            var J_tip_title = $('<h2 class="J_tip_title"></h2>');
            //创建主体内容
            var J_tip_content = $('<div class="J_tip_content"></div>');

            //给弹出层加入关闭按钮、title、主题内容
            self.J_tip_alert.append(self.J_tip_close);

            self.J_tip_alert.append(J_tip_title.append(self.get('title')));
            //给弹出层加入关闭按钮
            J_tip_content.append(self.get('text'));
            //添加提示信息
            self.J_tip_alert.append(J_tip_content);

        },

        //两秒隐藏提示
        _fadeOutTip: function () {

            var self = this;

            self.hideTip = setTimeout( function () {

                self.J_tip_alert.fadeOut(self.timeOut);

                self._timerAction();

            }, 2000 );

        },

        //绑定close事件
        _closeTip: function () {

            var self = this;

            _event.on(self.J_tip_close, 'click', function () {

                self.J_tip_alert.fadeOut(self.timeOut);

                self._timerAction();

            });

        },

        //tip层的显示
        _showTip: function () {

            var self = this;

            self.J_tip_alert.show();

        },

        //鼠标移入fadeIn或者show
        _mouseEvent: function () {

            var self = this;

            _event.on(self.J_tip_alert, 'mouseover', function () {

                clearTimeout(self.hideTip);

                self._showTip();

            });

            _event.on(self.J_tip_alert, 'mouseout', function () {

                self._fadeOutTip();

            });

        },

        //延时执行
        _timerAction: function (fn) {

            var self = this;

            var timer = setTimeout(function () {

                self.J_tip_alert.remove();

                clearTimeout(timer);

            }, (self.timeOut * 1000));

        }

    },{
        ATTRS:{
            title: {
                value: null
            },
            text: {
                value: null
            }
        }
    });

    return TipAlert;

}, {
    requires: ["dom", "node", "event", "base"]
});
